package org.paysim.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Objects;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

/**
 * <p>
 * 
 * </p>
 *
 * @author jiajin
 * @since 2025-04-27
 */
@TableName("order_table")
public class OrderTable implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId("order_id")
    private String orderId;

    private String userId;

    private BigDecimal totalAmount;

    private String orderStatus;

    private String subjectName;

    private String payMethod;

    private LocalDateTime createTime;

    private LocalDateTime updateTime;

    private LocalDate clearingDate;

    private String issuingBank;

    private String acquiringBank;

    public String getOrderId() {
        return orderId;
    }

    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public BigDecimal gettotalAmount() {
        return totalAmount;
    }

    public void settotalAmount(BigDecimal totalAmount) {
        this.totalAmount = totalAmount;
    }

    public String getorderStatus() {
        return orderStatus;
    }

    public void setorderStatus(String orderStatus) {
        this.orderStatus = orderStatus;
    }

    public String getPayMethod() {
        return payMethod;
    }

    public void setPayMethod(String payMethod) {
        this.payMethod = payMethod;
    }

    public LocalDateTime getCreateTime() {
        return createTime;
    }

    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }

    public LocalDateTime getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(LocalDateTime updateTime) {
        this.updateTime = updateTime;
    }

    public LocalDate getClearingDate() {
        return clearingDate;
    }

    public void setClearingDate(LocalDate clearingDate) {
        this.clearingDate = clearingDate;
    }

    public String getIssuingBank() {
        return issuingBank;
    }

    public void setIssuingBank(String issuingBank) {
        this.issuingBank = issuingBank;
    }

    public String getAcquiringBank() {
        return acquiringBank;
    }

    public void setAcquiringBank(String acquiringBank) {
        this.acquiringBank = acquiringBank;
    }

    public String getSubjectName() {
        return subjectName;
    }

    public void setSubjectName(String subjectName) {
        this.subjectName = subjectName;
    }

    @Override
    public int hashCode() {
        return Objects.hash(acquiringBank, totalAmount, clearingDate, createTime, issuingBank, orderId, payMethod,
                orderStatus, subjectName, updateTime, userId);
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        OrderTable other = (OrderTable) obj;
        return Objects.equals(acquiringBank, other.acquiringBank) && Objects.equals(totalAmount, other.totalAmount)
                && Objects.equals(clearingDate, other.clearingDate) && Objects.equals(createTime, other.createTime)
                && Objects.equals(issuingBank, other.issuingBank) && Objects.equals(orderId, other.orderId)
                && Objects.equals(payMethod, other.payMethod) && Objects.equals(orderStatus, other.orderStatus)
                && Objects.equals(subjectName, other.subjectName) && Objects.equals(updateTime, other.updateTime)
                && Objects.equals(userId, other.userId);
    }

}
